iT邦幫忙

2023 iThome 鐵人賽

DAY 22
0

  Pandas 是 Python 生態系中,適合用來做資料分析或機器學習的套件,上一篇文章介紹 Pandas 中對新手相當友善的繪圖函數 plot( ) ,讓我們能夠快速完成資料視覺化,然而,有的使用者對於線條、圖形有更多想法需要更多自定義的操作,此時,可以搭配 Python 另一個主攻視覺化的套件 Matplotlib 一起操作。

■ 說明

  Matplotlib 是 Python 中一個強大的繪圖套件,可以單獨匯入資料或結合 Pandas,自行定義想要的圖表和款式,除了可以製作基本的折線圖、長條圖、散佈圖等 2D 繪圖外,也能支援部分 3D 的繪圖,寫法和 Pandas 中 plot() 函數大致相同,使用時須確定環境已安裝 Matplotlib 函式庫!

  • 安裝套件:於 VS Code 的 Terminal 中輸入 pip install matplotlib
  • 檢查套件:於 VS Code 的 Terminal 中輸入 pip list,查看是否有 Matplotlib。
  • 常用模組:matplotlib.pyplot
    https://ithelp.ithome.com.tw/upload/images/20231007/20162238bG9WKR9c9Q.jpg
  • 常用參數:
    https://ithelp.ithome.com.tw/upload/images/20231007/20162238WPgnS3yXui.jpg

■ 實作|折線圖 line plot

  1. 使用時機:時間、趨勢、比較多個數據的變化
  2. 舉例:台北和高雄的月平均溫度比較圖
import pandas as pd
import matplotlib.pyplot as plt
# 方法一:結合pandas
data = {'month':['Jan','Fab','Mar','Apr','May','Jun','Jul','Aug','Sep'],
        'Taipei':[16,17,19,22,25,28,30,29,27],
        'Kaohsiung':[19,20,23,25,27,28,32,30,28]}
df = pd.DataFrame(data)

plt.title('Monthly Average Temperature Comparison') # 標題名稱
plt.plot(df['month'],df['Taipei'],label='Taipei',marker='s',linestyle=':') # 線條1 Taipei
plt.plot(df['month'],df['Kaohsiung'],label='Kaohsiung',marker='o') # 線條2 Kaohsiung
plt.ylabel('degree(°C)') # Y軸標籤
plt.legend()
plt.show()

# 方法二:自定義資料
month = ['Jan','Fab','Mar','Apr','May','Jun','Jul','Aug','Sep']
taipei = [16,17,19,22,25,28,30,29,27]
Kaohsiung = [19,20,23,25,27,28,32,30,28]

plt.title('Monthly Average Temperature Comparison')  
plt.plot(month,taipei,label='Taipei',marker='s',linestyle=':') 
plt.plot(month,Kaohsiung,label='Kaohsiung',marker='o') 
plt.ylabel('degree(°C)') 
plt.legend() 
plt.show()

https://ithelp.ithome.com.tw/upload/images/20231007/20162238Bou8WguokM.png

■ 實作|長條圖 bar chart

  1. 使用時機:比較不同類別的差異或排名
  2. 舉例:台灣六都人口統計圖
import pandas as pd
import matplotlib.pyplot as plt
data = {'city':['Taipei','New Taipei','Taoyuan','Taichung','Tainan','Kaohsiung'],
        'population':[2.5,4.03,2.3,2.83,1.85,2.73]}
df = pd.DataFrame(data)

plt.title('Population of Taiwan six cities')
plt.bar(df['city'],df['population'],color='#faebd7',edgecolor='#fa8072',linewidth=2)
plt.ylabel('population(million)')
plt.show()

https://ithelp.ithome.com.tw/upload/images/20231007/201622380TI29iAxOy.png

■ 實作|散布圖 scatter plot

  1. 使用時機:評估不同變數的相關性或辨識數據集中程度
  2. 舉例:評估單價和銷售量的關係
import pandas as pd
import matplotlib.pyplot as plt
data = {'price':[50,80,100,120,150,180,200,230,250,300],
        'sales':[100,90,80,70,60,30,20,15,10,0]}
df = pd.DataFrame(data)

plt.title('Price & Sales Analysis')
plt.scatter(df['price'],df['sales'],marker='s',color='#5f9ea0')
plt.ylabel('price(TWD)')
plt.show()

https://ithelp.ithome.com.tw/upload/images/20231007/201622388nIuSFT2aO.png

■ 結語

  雖然 Matplotlib 具備許多自行定義的操作,能製作出漂亮的圖表,可以結合 Pandas 也可以自訂資料,但缺點是程式碼的行數會非常多,因此,大家可以視需求決定資料視覺化的方式。如果有任何不理解、錯誤或其他方法想分享的話,歡迎留言給我!喜歡的話,也歡迎按讚訂閱唷!

我是 Eva,一位正在努力跨進資料科學領域的女子!我們下一篇文章見!Bye Bye~
【本篇文章將同步更新於個人的 Medium,期待與您的相遇!】


上一篇
Day 21|Pandas 一招帶你快速製圖
下一篇
Day 23|資料視覺化 - Seaborn
系列文
Pandas|資料前處理工具 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言